#!usr/bin/env python3
# 保存着错误页面的定义

from flask import render_template,request,jsonify
from . import main as mainBP

#如果使用errorhandler 修饰器，那么只有蓝本中的错误才能触发处理程序
#所以得用 app_errorhandler装饰器才能触发app的错误

#处理api请求时产生的404和500的错误
def isAPIError(code):
	if request.accept_mimetypes.accept_json and not request.accept_mimetypes.accept_html:
		#API请求
		response = jsonify({'error':code})
		response.status_code = code
		return response
	return None


@mainBP.app_errorhandler(404) #无法找到页面的错误
def page_not_found(e):
	rep = jsonify({'error':404})	
	apiErrorRep=isAPIError(404)
	if apiErrorRep:
		return apiErrorRep
	return render_template("error/404.html")

@mainBP.app_errorhandler(500) #初始化服务器的错误
def init_serv_error(e):
	apiErrorRep=isAPIError(500)
	if apiErrorRep:
		return apiErrorRep
	return render_template("error/500.html")

@mainBP.app_errorhandler(403) #访问权限错误页码
def init_permission_error(e):
	return render_template("error/403.html")